/* eslint-disable class-methods-use-this */
import _axios, { get, put, _delete } from '@/lin/plugin/axios'

// 我们通过 class 这样的语法糖使模型这个概念更加具象化，其优点：耦合性低、可维护性。
class Book {
  // constructor() {}

  // 类中的方法可以代表一个用户行为

  async addwarehouse(data) {
    return _axios({
      method: 'post',
      url: 'v1/warehouse',
      data,
    })
  }

  async getWarehouseList() {
    return _axios({
      method: 'get',
      url: 'v1/warehouse/list',
      handleError: true,
    })
  }

  // 在这里通过 async await 语法糖让代码同步执行
  // 1. await 一定要搭配 async 来使用
  // 2. await 后面跟的是一个 Promise 对象
  async getUser() {
    const res = await get('v1/user/userGroup/users')
    return res
  }
  //查询区域
  async getAreaList(id) {
    const res = await get(`v1/warearea/list/${id}`)
    return res
  }

  //根据id查询区域
  async getIdAreaList(id) {
    const res = await get(`v1/warearea/${id}`)
    return res
  }
  //删除区域
  async deleteArea(id) {
    const res = await _delete(`v1/warearea/${id}`)
    return res
  }
  //编辑区域
  async editArea(id, info) {
    const res = await put(`v1/warearea/${id}`, info)
    return res
  }
  //新增区域
  async addArea(data) {
    return _axios({
      method: 'post',
      url: 'v1/warearea',
      data,
    })
  }

  //删除库位
  async deleteLocation(id) {
    const res = await _delete(`v1/location/${id}`)
    return res
  }

  //库位列表
  async LocationList(id) {
    const res = await get(`v1/location/page/${id}`)
    return res
  }
  //创建库位
  async addLocation(data) {
    return _axios({
      method: 'post',
      url: 'v1/location',
      data,
    })
  }

  async getUserWarehouse(id) {
    const res = await get(`v1/userware/${id}`)
    return res
  }

  async gitAllWarehouse() {
    const res = await get('v1/warehouse/list')
    return res
  }

  async userware(info) {
    const res = await put('v1/userware', info)
    return res
  }
  //根据code查询
  async queryWarehouse(id) {
    const res = await get(`v1/warehouse/${id}`)
    return res
  }
  async editWarehouse(id, info) {
    const res = await put(`v1/warehouse/${id}`, info)
    return res
  }
}

export default new Book()
